#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;               // 定义最大数组大小
const int Mod = 1e9 + 7;                 // 定义取模常数
long long a[maxn], last[maxn], dp[maxn]; // 声明数组a, last和dp
int main() {
  memset(last, 0, sizeof(last)); // 初始化last数组为0
  int n;                         // 声明变量n和i
  cin >> n;                      // 输入序列长度
  for (int i = 1; i <= n; i++) {
    cin >> a[i]; // 输入序列元素
  }
  dp[0] = 1; // 初始化dp[0]为1
  for (int i = 1; i <= n; i++) {
    dp[i] = dp[i - 1] * 2; // 计算dp[i]为前一个值的两倍
    dp[i] %= Mod;          // 对dp[i]取模
    if (last[a[i]])        // 如果a[i]在之前出现过
      dp[i] = (dp[i] - dp[last[a[i]] - 1] + Mod) % Mod; // 更新dp[i]以排除重复
    // dp[i]可能大于Mod,在对Mod取余后dp[i]将会小于dp[last[a[i]]-1]，从而得到一个小于0的数，
    last[a[i]] = i; // 记录最后一次a[i]出现的位置
  }
  cout << dp[n] - 1 << endl; // 输出结果，减去1以排除空子序列
}